#include <cstring>
#include <iostream>
using namespace std;
const int N = 2010;
struct BigInteger {
  int data[N];
  BigInteger() { memset(data, 0, sizeof(data)); }
};

void BigIntAdd(BigInteger &a, BigInteger const &b) {
  for (int i = N - 1; i >= 1; --i) {
    a.data[i] += b.data[i];
    if (a.data[i] >= 10) {
      int carry = a.data[i] / 10;
      a.data[i] %= 10;
      a.data[i - 1] += carry;
    }
  }
}
void BigIntAdd(BigInteger &a, int const b) {
  a.data[N - 1] += b;
  for (int i = N - 1; i >= 1; --i) {
    if (a.data[i] >= 10) {
      int carry = a.data[i] / 10;
      a.data[i] %= 10;
      a.data[i - 1] += carry;
    } else
      break;
  }
}

void BigIntMul(BigInteger &a, int b) {
  for (int i = N - 1; i >= 1; --i) a.data[i] *= b;
  for (int i = N - 1; i >= 1; --i) {
    if (a.data[i] >= 10) {
      int carry = a.data[i] / 10;
      a.data[i] %= 10;
      a.data[i - 1] += carry;
    }
  }
}
void BigIntMul(BigInteger &a, BigInteger const &b) {
  for (int i = N - 1; i >= 1; --i)
    for (int i = N - 1; i >= 1; --i) {
      if (a.data[i] >= 10) {
        int carry = a.data[i] / 10;
        a.data[i] %= 10;
        a.data[i - 1] += carry;
      }
    }
}

ostream &operator<<(ostream &os, BigInteger &a) {
  int i = 0;
  while (a.data[i] == 0) i++;
  for (; i < N; ++i) {
    os.put(a.data[i] + '0');
  }
  return os;
}
istream &operator>>(istream &is, BigInteger a) {
  string buf;
  is >> buf;
  for (int i = 1; i <= buf.size(); ++i) {
    a.data[N - i] = buf[buf.size() - i] - '0';
  }
  return is;
}
int main() {
  BigInteger a, b;
  cin >> a >> b;
}
